home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 18 / fpc103.zip / VIDEO.SEQ < prev    next >
Text File  |  1988-06-02  |  2KB  |  69 lines

  1. \ VIDEO.SEQ     Direct VIDEO Screen output              by Tom Zimmer
  2.  
  3. FILES DEFINITIONS
  4.  
  5. VARIABLE VIDEO.SEQ
  6.  
  7. FORTH DEFINITIONS
  8.  
  9. VARIABLE ATTRIB   7 ATTRIB !-T          \ display attribute value
  10. VARIABLE VIDEO-SEG                      \ Segment of display
  11. VARIABLE TYPESEG       \ video type segment, the segment we are typing from.
  12.  
  13. CODE ?VMODE     ( --- N1 )
  14.                 MOV AH, # 15    INT 16          SUB AH, AH
  15.                 1PUSH           END-CODE
  16.  
  17. DEFER INITMONO  ' NOOP IS INITMONO      \ INITIALIZATION VECTOR AVAILABLE
  18. DEFER INITCOLOR ' NOOP IS INITCOLOR     \ FOR MONOCHROME AND COLOR
  19.  
  20. HEX
  21. : VMODE.SET     ( --- )
  22.                 ?VMODE 7 =
  23.                 IF      0B000   INITMONO
  24.                 ELSE    0B800   INITCOLOR
  25.                 THEN    VIDEO-SEG ! ;
  26. DECIMAL
  27.  
  28. comment:
  29.  
  30. CODE VTYPE      ( string length x y -- )
  31.                 POP AX          \ Y
  32.                 POP DX          \ X
  33.                 POP BX          \ LENGTH
  34.                 PUSH BX         \ Save them back again
  35.                 PUSH DX
  36.                 PUSH AX
  37.                 ADD DX, BX      \ Set length + X position to DL
  38.                 cmp dx, # 79
  39.              >= if
  40.                         mov dx, # 79
  41.                 then
  42.                 mov #out dx
  43.                 MOV DH, AL      \ Move Y to DH
  44.                 XOR BX, BX      \ Clear BX
  45.                 MOV AH, # 2
  46.                 INT 16          \ Move cursor to end of typed string
  47.                 MOV AX, # 160
  48.                 POP BX          MUL BX          MOV DI, AX
  49.                 POP AX          SHL AX, # 1     ADD DI, AX
  50.                 POP CX          POP BX
  51.                 XCHG SI, BX                     \ SI is the source
  52.                 PUSH BX                         \ Save SI for later restoral
  53.                 PUSH ES                         \ save ES
  54.                 MOV AH, ATTRIB                  \ display attributes
  55.                 MOV ES, VIDEO-SEG               \ destination segment
  56.                 MOV DS, TYPESEG                   \ source segment
  57. LABEL VTYPE1    LODSB           STOSW           \ Move a byte to display
  58.            LOOP VTYPE1                          \ LOOP till CX is zero
  59.                 POP ES                          \ restore ES
  60.                 POP SI                          \ Restore IP
  61.                 MOV BX, CS      MOV DS, BX      \ restore DS
  62.                 NEXT            END-CODE
  63.  
  64. DECIMAL
  65.  
  66. comment;
  67.  
  68.  
  69.